<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
    <script type="text/javascript">
        
// function fn(){
//     console.log(Array.prototype.slice.call(arguments))
// }
// fn(1,2,3,4,5)
    
    var Thunk=(fn)=>{
        return function(){
            var arg=Array.prototype.slice.call(arguments);
            return (callback)=>{
                arg.push(callback)
                fn.apply(this, arg)
            }
        }
    }
    Thunk((str1,str2,callback)=>{
        callback(str1,str2)
    })('hello','world')((str1,str2)=>{
        console.log(str1,str2)
    })
    function s(str1,str2,callback){
         callback(str1,str2)
    }
    var fn=Thunk(s)
    var callbackFun=function(){
        console.log(arguments)
    }
    fn('hello','world')(callbackFun)

    this.x = 9; 
    var module = {
      x: 81,
      getX: function() { console.log( this.x) }
    };

    module.getX(); // 返回 81

    var retrieveX = module.getX;
    retrieveX(); // 返回 9, 在这种情况下，"this"指向全局作用域

    // 创建一个新函数，将"this"绑定到module对象
    var boundGetX = retrieveX.bind(module);
    boundGetX(); // 返回 81
    </script>
    </body>
</html>